package com.jlpay.open.jlpay.sdk.java.model.ledger.response;

import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import com.jlpay.open.jlpay.sdk.java.model.BaseResponse;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 *
 * @author dengwenning
 * @since 2024/8/30
 **/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class BalanceSplitResponse extends BaseResponse {

    /**
     * 机构号
     * 分账系统分配的机构号，
     * 示例值：50261513
     */
    private String orgCode;

    /**
     * 接入方系统生成的分账请求单号
     */
    private String outOrderNo;

    /**
     * 嘉联分账单号
     * 分账系统返回的单号，
     * 示例值：61109827766780299776
     */
    private String orderNo;

    /**
     * 分账总金额
     * 总分账金额，单位为分，只能为整数，
     * 示例值：200
     */
    private Integer totalAmount;

    /**
     * 分账单状态
     * 分账单状态（每个接收方的分账结果请查看receivers中的result字段）
     * 1、PROCESSING：处理中
     * 2、FINISHED：分账完成
     */
    private String state;

    /**
     * 分账接收方列表
     */
    private List<Receiver> receivers;

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
    public static class Receiver {

        /**
         * 接收方商户号
         * 分账接收方商户号，
         * 示例值：849440358120012
         */
        private String revMchId;

        /**
         * 分账金额
         * 分账接收方入账金额，单位为分，
         * 示例值：2000
         */
        private Integer amount;

        /**
         * 分账场景用途描述
         */
        private String description;

        /**
         * 分账结果
         * 1、PENDING：处理中
         * 2、SUCCESS：已成功
         * 3、FAILED：已失败
         */
        private String result;

        /**
         * 分账失败原因，当分账结果result为FAILED时，返回该字段
         */
        private String failReason;

        /**
         * 分账明细单号，每笔分账业务执行的明细单号，
         * 示例值：61109827766780299776
         */
        private String detailId;

        /**
         * 分账创建时间，格式"yyyy-MM-dd HH:mm:ss"
         */
        private String createTime;

        /**
         * 分账完成时间，格式"yyyy-MM-dd HH:mm:ss"
         */
        private String finishTime;
    }

}
